﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using Turnero.Entidades;

namespace Turnero.DAOs
{
    class DAO_Profesionales:BaseDatos
    {

        public Boolean guardarProfesional(string mp, string apellidos, string nombres,
                                       string tipodoc, string nrodoc,
                                       string fechanac, string sexo,
                                       string dom, string loc, string tel,
                                       string cel, string email, string cuitcuil,
                                       string obs, string fecaltasistema, string especialidad)
        {

            try
            {
                String query = "INSERT INTO tblProfesionales (matricula, tipodocumento, nrodocumento, apellidos, nombres, " +
                               "fechanacimiento, calleynumero, localidad, sexo, telefono, celular, email, cuit_cuil, observaciones, fecaltasistema, especialidad) " +
                               "values (@mp, @tipodoc, @nrodoc, @apellidos, @nombres, @fechanac, @dom, @loc, @sexo, @tel, @cel, " +
                               "@email, @cuitcuil, @obs, @fecaltasistema, @especialidad)";

                SqlCommand cmd = new SqlCommand(query, ConectarDB());

                cmd.Parameters.AddWithValue("@mp", mp);
                cmd.Parameters.AddWithValue("@tipodoc", tipodoc);
                cmd.Parameters.AddWithValue("@nrodoc", nrodoc);
                cmd.Parameters.AddWithValue("@apellidos", apellidos);
                cmd.Parameters.AddWithValue("@nombres", nombres);
                cmd.Parameters.AddWithValue("@fechanac", fechanac);
                cmd.Parameters.AddWithValue("@dom", dom);
                cmd.Parameters.AddWithValue("@loc", loc);
                cmd.Parameters.AddWithValue("@sexo", sexo);
                cmd.Parameters.AddWithValue("@tel", tel);
                cmd.Parameters.AddWithValue("@cel", cel);
                cmd.Parameters.AddWithValue("@email", email);
                cmd.Parameters.AddWithValue("@cuitcuil", cuitcuil);
                cmd.Parameters.AddWithValue("@obs", obs);
                cmd.Parameters.AddWithValue("@fecaltasistema", fecaltasistema);
                cmd.Parameters.AddWithValue("@especialidad", especialidad);

                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }

        public bool BorrarProfesional(Int32 idprof)
        {
            try
            {
                String query = "DELETE from tblProfesionales where idprofesional = @idprof";
                SqlCommand cmd = new SqlCommand(query, ConectarDB());

                cmd.Parameters.AddWithValue("@idprof", idprof);
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }

        public Boolean actualizarProfesional(string cod, string mat, string apellidos, string nombres,
                                      string tipodoc, string nrodoc,
                                      string fechanac, string sexo,
                                      string dom, string loc, string tel,
                                      string cel, string email, string cuitcuil,
                                      string obs)
        {

            try
            {
                String query = "UPDATE tblProfesionales " +
                               "SET matricula = @mat, tipodocumento = @tipodoc, nrodocumento = @nrodoc, apellidos = @apellidos, nombres = @nombres, " +
                               "fechanacimiento = @fechanac, calleynumero = @dom, localidad = @loc, sexo = @sexo, telefono = @tel, " +
                               "celular = @cel, email = @email, cuit_cuil = @cuitcuil, observaciones = @obs, " +
                               "WHERE idprofesional = @cod";

                SqlCommand cmd = new SqlCommand(query, ConectarDB());

                cmd.Parameters.AddWithValue("@mat", mat);
                cmd.Parameters.AddWithValue("@tipodoc", tipodoc);
                cmd.Parameters.AddWithValue("@nrodoc", nrodoc);
                cmd.Parameters.AddWithValue("@apellidos", apellidos);
                cmd.Parameters.AddWithValue("@nombres", nombres);
                cmd.Parameters.AddWithValue("@fechanac", fechanac);
                cmd.Parameters.AddWithValue("@dom", dom);
                cmd.Parameters.AddWithValue("@loc", loc);
                cmd.Parameters.AddWithValue("@sexo", sexo);
                cmd.Parameters.AddWithValue("@tel", tel);
                cmd.Parameters.AddWithValue("@cel", cel);
                cmd.Parameters.AddWithValue("@email", email);
                cmd.Parameters.AddWithValue("@cuitcuil", cuitcuil);
                cmd.Parameters.AddWithValue("@obs", obs);
                cmd.Parameters.AddWithValue("@cod", cod);
                
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }


        public DataTable dameTodosLosProfesionales()
        {
            DataTable dt = new DataTable();
            SqlCommand cmd = new SqlCommand("paConsultarTodosLosProfesionales", cn);
            cmd.Connection = ConectarDB();
            cmd.CommandType = CommandType.StoredProcedure;
            dt.Load(cmd.ExecuteReader());
            return dt;
        }

        //public DataTable dameEspecialidades()
        //{
        //    DataTable dt = new DataTable();
        //    SqlCommand cmd = new SqlCommand("paConsultarTodasLasEspecialidades", cn);
        //    cmd.Connection = ConectarDB();
        //    cmd.CommandType = CommandType.StoredProcedure;
        //    dt.Load(cmd.ExecuteReader());
        //    return dt;
        //}

        public Boolean existeProfesional(String tipodoc, String nrodoc)
        {
            Boolean existe = false;

            SqlCommand cmd = new SqlCommand("paConsultarTipoNroDocProf", cn);
            cmd.Connection = ConectarDB();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@tipodoc", tipodoc);
            cmd.Parameters.AddWithValue("@nrodoc", nrodoc);
            SqlDataReader dr = cmd.ExecuteReader();

            if (dr.Read())
            {
                existe = true;
            }
            return existe;
        }

        public Boolean existeProfesionalMatricula(String mp)
        {
            Boolean existe = false;

            SqlCommand cmd = new SqlCommand("paConsultarMatProf", cn);
            cmd.Connection = ConectarDB();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@mp", mp);            
            SqlDataReader dr = cmd.ExecuteReader();

            if (dr.Read())
            {
                existe = true;
            }
            return existe;
        }

        public DataTable dameProfesionalesPorMP(string mp)
        {
            mp = mp + "%";            
            DataTable dt = new DataTable();
            SqlCommand cmd = new SqlCommand("paConsultarProfesionalPorMP", cn);
            cmd.Connection = ConectarDB();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@mp", mp);
            dt.Load(cmd.ExecuteReader());
            return dt;
        }

        public DataTable dameProfesionalesPorNombreYApellido(string ape, string nom)
        {
            ape = ape + "%";
            nom = nom + "%";
            DataTable dt = new DataTable();
            SqlCommand cmd = new SqlCommand("paConsultarProfesionalesApeNom", cn);
            cmd.Connection = ConectarDB();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@apellidos", ape);
            cmd.Parameters.AddWithValue("@nombres", nom);
            dt.Load(cmd.ExecuteReader());
            return dt;
        }

        public Turnero.Entidades.Profesional dameProfesionalesPorMPObj(string mp)
        {
            Turnero.Entidades.Profesional pr = new Turnero.Entidades.Profesional();
            SqlCommand cmd = new SqlCommand("paConsultarProfesionalPorMP", cn);
            cmd.Connection = ConectarDB();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@mp", mp);
            SqlDataReader dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                pr.Cod = dr.GetInt32(0).ToString();
                pr.Mat = dr.GetString(1);
                pr.Ape = dr.GetString(2);
                pr.Nom = dr.GetString(3);
            }
            dr.Close();
            return pr;
        }

        internal Turnero.Entidades.Profesional dameProfesionalPorID(int idProfesional)
        {
            Turnero.Entidades.Profesional pr = new Turnero.Entidades.Profesional();
            SqlCommand cmd = new SqlCommand("paConsultarProfesionalPorID", cn);
            cmd.Connection = ConectarDB();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@idProfesional", idProfesional);
            SqlDataReader dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                pr.Cod = dr.GetInt32(0).ToString();
                pr.Mat = dr.GetString(1);
                pr.Ape = dr.GetString(2);
                pr.Nom = dr.GetString(3);
            }
            dr.Close();
            return pr;
        }
    }
}
